home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Arsenal / OS2 Arsenal v1.0 (Disc 1)(Arsenal Computer).ISO / os2_drvr / wdc24t.dsk / FIX_OS2_T4700CS.PMI < prev    next >
Text File  |  1994-04-27  |  47KB  |  1,921 lines

  1. /*
  2.  *      OS/2 2.1 SVGA PMI-File Generator
  3.  */
  4.  
  5. [AdapterType]
  6.         WESTERNDIGITAL
  7.  
  8. [ChipSet]
  9.         WD90C24
  10.  
  11. /*
  12.  *      Lock Extended Registers
  13.  */
  14.  
  15. /*
  16.  *      This section locks adapter and chip
  17.  *      AS MUCH as BIOS does and NOT MORE!
  18.  *      In other words, it restores the NORMAL lock state.
  19.  */
  20.  
  21. [Lock]
  22. outb(0x3c4, 0x35);
  23. outb(0x3c5, 0x00);
  24. outb(0x3c4, 0x06);
  25. outb(0x3c5, 0x48);
  26. outb(0x3b4, 0x35);
  27. outb(0x3b5, 0xff);
  28. outb(0x3d4, 0x35);
  29. outb(0x3d5, 0x40);
  30. outb(0x3b4, 0x34);
  31. outb(0x3b5, 0xff);
  32. outb(0x3d4, 0x34);
  33. outb(0x3d5, 0x30);
  34. outb(0x3b4, 0x29);
  35. outb(0x3b5, 0xff);
  36. outb(0x3d4, 0x29);
  37. outb(0x3d5, 0xd5);
  38. outb(0x3b4, 0x27);
  39. outb(0x3b5, 0xff);
  40. outb(0x3b4, 0x29);
  41. outb(0x3b5, 0xff);
  42. outb(0x3d4, 0x27);
  43. outb(0x3d5, 0x00);
  44. outb(0x3d4, 0x29);
  45. outb(0x3d5, 0xff);
  46. outb(0x3ce, 0x0f);
  47. outb(0x3cf, 0x00);
  48.  
  49. /*
  50.  *      Unlock Extended Registers
  51.  */
  52.  
  53. [UnLock]
  54. outb(0x3ce, 0x0f);
  55. outb(0x3cf, 0x05);
  56. outb(0x3d4, 0x29);
  57. outb(0x3d5, 0xd5);
  58. outb(0x3d4, 0x27);
  59. outb(0x3d5, 0x80);
  60. outb(0x3b4, 0x29);
  61. outb(0x3b5, 0xd5);
  62. outb(0x3b4, 0x27);
  63. outb(0x3b5, 0x80);
  64. outb(0x3d4, 0x29);
  65. outb(0x3d5, 0xa5);
  66. outb(0x3b4, 0x29);
  67. outb(0x3b5, 0xa5);
  68. outb(0x3d4, 0x34);
  69. outb(0x3d5, 0xa6);
  70. outb(0x3b4, 0x34);
  71. outb(0x3b5, 0xa6);
  72. outb(0x3d4, 0x35);
  73. outb(0x3d5, 0x30);
  74. outb(0x3b4, 0x35);
  75. outb(0x3b5, 0x30);
  76. outb(0x3c4, 0x06);
  77. outb(0x3c5, 0x48);
  78. outb(0x3c4, 0x35);
  79. outb(0x3c5, 0x50);
  80.  
  81. [Cleanup]
  82.  
  83. rmwb(0x3ce, 0x3cf, 0x0c, 0xe7, 0x00);
  84. rmwb(0x3ce, 0x3cf, 0x0e, 0x00, 0x00);
  85. rmwb(0x3ce, 0x3cf, 0x09, 0x00, 0x00);
  86. rmwb(0x3d4, 0x3d5, 0x2d, 0x00, 0x00);
  87. rmwb(0x3d4, 0x3d5, 0x2e, 0x00, 0x00);
  88. rmwb(0x3d4, 0x3d5, 0x2f, 0x00, 0x42);
  89. rmwb(0x3c4, 0x3c5, 0x12, 0x00, 0x00);
  90.  
  91. [comment]
  92.         Text Mode: 40 cols, 25 rows.
  93.  
  94. [ModeInfo]
  95.         ModeAttributes   = 0x08
  96.         BytesPerScanLine = 40
  97.         XResolution      = 360
  98.         YResolution      = 400
  99.         XCharSize        = 9
  100.         YCharSize        = 16
  101.         TextRows         = 25
  102.         BitsPerPixel     = 4
  103.         NumberOfPlanes   = 1
  104.         PageLength       = 4000
  105.         SaveSize         = 4000
  106.         TotalMemory      = 1048576
  107.         InterlaceMode    = 0
  108.         BufferAddress    = 0x0b8000
  109.  
  110. [TrapRegs]
  111.         0x3c2;
  112.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  113.         0x3c5;
  114.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  115.         0x3d5;
  116.         0x3c0, 0x00-0x13;
  117.         0x3c1;
  118.         0x3ce, 0x00-0x13, 0x15-0x16;
  119.         0x3cf;
  120.         0x23c0;
  121.         0x23c2;
  122.         0x23c8;
  123.         0x23ca;
  124.         0x23cc;
  125.         0x3b4;
  126.         0x3b5;
  127.  
  128. [SetMode]
  129.  
  130. /*
  131.  *      Set Miscellaneous Output Register
  132.  */
  133.  
  134. outb(0x3c2, 0x63);
  135.  
  136.  
  137. /*
  138.  *      Set Sequencer Registers
  139.  */
  140.  
  141. r0   = 0x00; r1   = 0x08; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  142. boutb(5, 0x00, 0x3c4, 0x3c5);
  143.  
  144. outw(0x3c4, 0x0300);
  145. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  146. boutb(3, 0x07, 0x3c4, 0x3c5);
  147.  
  148. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  149. boutb(3, 0x10, 0x3c4, 0x3c5);
  150.  
  151. r32  = 0x00;
  152. boutb(1, 0x20, 0x3c4, 0x3c5);
  153.  
  154. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  155. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  156. r39  = 0x00; r40  = 0x00;
  157. boutb(7, 0x22, 0x3c4, 0x3c5);
  158.  
  159. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  160. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x04);
  161. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  162.  
  163.  
  164. r51  = 0x00; r52  = 0x00;
  165. boutb(2, 0x33, 0x3c4, 0x3c5);
  166.  
  167. r54  = 0x00;
  168. boutb(1, 0x36, 0x3c4, 0x3c5);
  169.  
  170. /*
  171.  *      Set CRT Registers
  172.  */
  173.  
  174. outw(0x3d4, 0x0e11);
  175. r0   = 0x60; r1   = 0x27; r2   = 0x50; r3   = 0x82; r4   = 0x55;
  176. r5   = 0x81; r6   = 0x14; r7   = 0x3e; r8   = 0x00; r9   = 0x4f;
  177. r10  = 0x0d; r11  = 0x0e; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  178. r15  = 0x00; r16  = 0xea; r17  = 0x8b; r18  = 0x8f; r19  = 0x14;
  179. r20  = 0x1f; r21  = 0xe7; r22  = 0x04; r23  = 0xa3; r24  = 0xff;
  180. boutb(25, 0x00, 0x3d4, 0x3d5);
  181.  
  182. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  183. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  184. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x42;
  185. boutb(4, 0x2c, 0x3d4, 0x3d5);
  186.  
  187. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  188. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  189. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  190. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  191. boutb(4, 0x36, 0x3d4, 0x3d5);
  192.  
  193. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  194. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  195. boutb(3, 0x3b, 0x3d4, 0x3d5);
  196.  
  197. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  198. r63  = 0x00;
  199. boutb(1, 0x3f, 0x3d4, 0x3d5);
  200.  
  201. /*
  202.  *      Set Attribute Registers
  203.  */
  204.  
  205. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  206. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  207. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  208. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  209. boutb(20, 0x00, 0x3c0, 0x3c1);
  210.  
  211. /*
  212.  *      Set GDC Registers
  213.  */
  214.  
  215. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  216. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  217. r10  = 0x00;
  218. boutb(11, 0x00, 0x3ce, 0x3cf);
  219.  
  220. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  221. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  222. r13  = 0x00;
  223. boutb(1, 0x0d, 0x3ce, 0x3cf);
  224.  
  225. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  226. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  227. boutb(4, 0x10, 0x3ce, 0x3cf);
  228.  
  229. r21  = 0x10; r22  = 0x0e;
  230. boutb(2, 0x15, 0x3ce, 0x3cf);
  231.  
  232. outw(0x23c0, 0x2000);
  233. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  234. outw(0x23c0, 0x0000);
  235. /*
  236.  *      Set Other Registers
  237.  */
  238.  
  239. outw(0x23c2, 0x0000);
  240. outw(0x23c0, 0x0001);
  241. outw(0x23c2, 0x0000);
  242. outw(0x23c2, 0x1000);
  243. outw(0x23c2, 0x2000);
  244. outw(0x23c2, 0x3000);
  245. outw(0x23c2, 0x410a);
  246. outw(0x23c2, 0x519e);
  247. outw(0x23c2, 0x6000);
  248. outw(0x23c2, 0x7000);
  249. outw(0x23c2, 0x8000);
  250. outw(0x23c2, 0x9000);
  251. outw(0x23c2, 0xa000);
  252. outw(0x23c2, 0xb000);
  253. outw(0x23c2, 0xc000);
  254. outw(0x23c2, 0xd000);
  255. outw(0x23c2, 0xe000);
  256. outw(0x23c0, 0x0102);
  257. outw(0x23c2, 0x1000);
  258. outw(0x23c2, 0x2000);
  259. outw(0x23c2, 0x3000);
  260. outw(0x23c2, 0x4000);
  261. outw(0x23c2, 0x5000);
  262. outw(0x23c2, 0x6000);
  263. outw(0x23c2, 0x7000);
  264. outw(0x23c2, 0x8000);
  265. outw(0x23c0, 0x0002);
  266. outw(0x23c2, 0x0000);
  267. outw(0x23c8, 0x0000);
  268. outw(0x23ca, 0x0000);
  269. outw(0x23cc, 0x0000);
  270. /*
  271.  *      Set Miscellaneous Output Register
  272.  */
  273.  
  274. outb(0x3c2, 0x67);
  275.  
  276.  
  277. [comment]
  278.         Text Mode: 80 cols, 25 rows.
  279.  
  280. [ModeInfo]
  281.         ModeAttributes   = 0x08
  282.         BytesPerScanLine = 80
  283.         XResolution      = 720
  284.         YResolution      = 400
  285.         XCharSize        = 9
  286.         YCharSize        = 16
  287.         TextRows         = 25
  288.         BitsPerPixel     = 4
  289.         NumberOfPlanes   = 1
  290.         PageLength       = 4000
  291.         SaveSize         = 4000
  292.         TotalMemory      = 1048576
  293.         InterlaceMode    = 0
  294.         BufferAddress    = 0x0b8000
  295.  
  296. [TrapRegs]
  297.         0x3c2;
  298.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  299.         0x3c5;
  300.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  301.         0x3d5;
  302.         0x3c0, 0x00-0x13;
  303.         0x3c1;
  304.         0x3ce, 0x00-0x13, 0x15-0x16;
  305.         0x3cf;
  306.         0x23c0;
  307.         0x23c2;
  308.         0x23c8;
  309.         0x23ca;
  310.         0x23cc;
  311.         0x3b4;
  312.         0x3b5;
  313.  
  314. [SetMode]
  315.  
  316. /*
  317.  *      Set Miscellaneous Output Register
  318.  */
  319.  
  320. outb(0x3c2, 0x63);
  321.  
  322.  
  323. /*
  324.  *      Set Sequencer Registers
  325.  */
  326.  
  327. r0   = 0x00; r1   = 0x00; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  328. boutb(5, 0x00, 0x3c4, 0x3c5);
  329.  
  330. outw(0x3c4, 0x0300);
  331. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  332. boutb(3, 0x07, 0x3c4, 0x3c5);
  333.  
  334. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  335. boutb(3, 0x10, 0x3c4, 0x3c5);
  336.  
  337. r32  = 0x00;
  338. boutb(1, 0x20, 0x3c4, 0x3c5);
  339.  
  340. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  341. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  342. r39  = 0x00; r40  = 0x00;
  343. boutb(7, 0x22, 0x3c4, 0x3c5);
  344.  
  345. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  346. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  347. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  348. r51  = 0x00; r52  = 0x00;
  349. boutb(2, 0x33, 0x3c4, 0x3c5);
  350.  
  351. r54  = 0x00;
  352. boutb(1, 0x36, 0x3c4, 0x3c5);
  353.  
  354. /*
  355.  *      Set CRT Registers
  356.  */
  357.  
  358. outw(0x3d4, 0x0e11);
  359. r0   = 0x60; r1   = 0x4f; r2   = 0x50; r3   = 0x82; r4   = 0x55;
  360. r5   = 0x81; r6   = 0x14; r7   = 0x3e; r8   = 0x00; r9   = 0x4f;
  361. r10  = 0x0d; r11  = 0x0e; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  362. r15  = 0x00; r16  = 0xea; r17  = 0x8b; r18  = 0x8f; r19  = 0x28;
  363. r20  = 0x1f; r21  = 0xe7; r22  = 0x04; r23  = 0xa3; r24  = 0xff;
  364. boutb(25, 0x00, 0x3d4, 0x3d5);
  365.  
  366. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  367. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  368. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x42;
  369. boutb(4, 0x2c, 0x3d4, 0x3d5);
  370.  
  371. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  372. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  373. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  374. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  375. boutb(4, 0x36, 0x3d4, 0x3d5);
  376.  
  377. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  378. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  379. boutb(3, 0x3b, 0x3d4, 0x3d5);
  380.  
  381. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  382. r63  = 0x00;
  383. boutb(1, 0x3f, 0x3d4, 0x3d5);
  384.  
  385. /*
  386.  *      Set Attribute Registers
  387.  */
  388.  
  389. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  390. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  391. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  392. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  393. boutb(20, 0x00, 0x3c0, 0x3c1);
  394.  
  395. /*
  396.  *      Set GDC Registers
  397.  */
  398.  
  399. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  400. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  401. r10  = 0x00;
  402. boutb(11, 0x00, 0x3ce, 0x3cf);
  403.  
  404. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  405. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  406. r13  = 0x00;
  407. boutb(1, 0x0d, 0x3ce, 0x3cf);
  408.  
  409. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  410. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  411. boutb(4, 0x10, 0x3ce, 0x3cf);
  412.  
  413. r21  = 0x10; r22  = 0x0e;
  414. boutb(2, 0x15, 0x3ce, 0x3cf);
  415.  
  416. outw(0x23c0, 0x2000);
  417. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  418. outw(0x23c0, 0x0000);
  419. /*
  420.  *      Set Other Registers
  421.  */
  422.  
  423. outw(0x23c2, 0x0000);
  424. outw(0x23c0, 0x0001);
  425. outw(0x23c2, 0x0000);
  426. outw(0x23c2, 0x1000);
  427. outw(0x23c2, 0x2000);
  428. outw(0x23c2, 0x3000);
  429. outw(0x23c2, 0x410a);
  430. outw(0x23c2, 0x519e);
  431. outw(0x23c2, 0x6000);
  432. outw(0x23c2, 0x7000);
  433. outw(0x23c2, 0x8000);
  434. outw(0x23c2, 0x9000);
  435. outw(0x23c2, 0xa000);
  436. outw(0x23c2, 0xb000);
  437. outw(0x23c2, 0xc000);
  438. outw(0x23c2, 0xd000);
  439. outw(0x23c2, 0xe000);
  440. outw(0x23c0, 0x0102);
  441. outw(0x23c2, 0x1000);
  442. outw(0x23c2, 0x2000);
  443. outw(0x23c2, 0x3000);
  444. outw(0x23c2, 0x4000);
  445. outw(0x23c2, 0x5000);
  446. outw(0x23c2, 0x6000);
  447. outw(0x23c2, 0x7000);
  448. outw(0x23c2, 0x8000);
  449. outw(0x23c0, 0x0002);
  450. outw(0x23c2, 0x0000);
  451. outw(0x23c8, 0x0000);
  452. outw(0x23ca, 0x0000);
  453. outw(0x23cc, 0x0000);
  454. /*
  455.  *      Set Miscellaneous Output Register
  456.  */
  457.  
  458. outb(0x3c2, 0x67);
  459.  
  460.  
  461. [comment]
  462.         Graphics Mode: 640 x 480 x 16 colors.
  463.  
  464. [ModeInfo]
  465.         ModeAttributes   = 0x18
  466.         BytesPerScanLine = 80
  467.         XResolution      = 640
  468.         YResolution      = 480
  469.         TextRows         = 24
  470.         BitsPerPixel     = 4
  471.         NumberOfPlanes   = 4
  472.         PageLength       = 38400
  473.         SaveSize         = 153600
  474.         TotalMemory      = 1048576
  475.         InterlaceMode    = 0
  476.         BufferAddress    = 0x0a0000
  477.  
  478. [TrapRegs]
  479.         0x3c2;
  480.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  481.         0x3c5;
  482.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  483.         0x3d5;
  484.         0x3c0, 0x00-0x13;
  485.         0x3c1;
  486.         0x3ce, 0x00-0x13, 0x15-0x16;
  487.         0x3cf;
  488.         0x23c0;
  489.         0x23c2;
  490.         0x23c8;
  491.         0x23ca;
  492.         0x23cc;
  493.         0x3b4;
  494.         0x3b5;
  495.  
  496. [SetMode]
  497.  
  498. /*
  499.  *      Set Miscellaneous Output Register
  500.  */
  501.  
  502. outb(0x3c2, 0xe3);
  503.  
  504.  
  505. /*
  506.  *      Set Sequencer Registers
  507.  */
  508.  
  509. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x06;
  510. boutb(5, 0x00, 0x3c4, 0x3c5);
  511.  
  512. outw(0x3c4, 0x0300);
  513. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  514. boutb(3, 0x07, 0x3c4, 0x3c5);
  515.  
  516. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  517. boutb(3, 0x10, 0x3c4, 0x3c5);
  518.  
  519. r32  = 0x00;
  520. boutb(1, 0x20, 0x3c4, 0x3c5);
  521.  
  522. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  523. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  524. r39  = 0x00; r40  = 0x00;
  525. boutb(7, 0x22, 0x3c4, 0x3c5);
  526.  
  527. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  528. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  529. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  530. r51  = 0x00; r52  = 0x00;
  531. boutb(2, 0x33, 0x3c4, 0x3c5);
  532.  
  533. r54  = 0x00;
  534. boutb(1, 0x36, 0x3c4, 0x3c5);
  535.  
  536. /*
  537.  *      Set CRT Registers
  538.  */
  539.  
  540. outw(0x3d4, 0x0e11);
  541. r0   = 0x60; r1   = 0x4f; r2   = 0x50; r3   = 0x82; r4   = 0x55;
  542. r5   = 0x81; r6   = 0x14; r7   = 0x3e; r8   = 0x00; r9   = 0x40;
  543. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  544. r15  = 0x00; r16  = 0xea; r17  = 0x8b; r18  = 0xdf; r19  = 0x28;
  545. r20  = 0x00; r21  = 0xe7; r22  = 0x04; r23  = 0xe3; r24  = 0xff;
  546. boutb(25, 0x00, 0x3d4, 0x3d5);
  547.  
  548. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  549. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  550. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x42;
  551. boutb(4, 0x2c, 0x3d4, 0x3d5);
  552.  
  553. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  554. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  555. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  556. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  557. boutb(4, 0x36, 0x3d4, 0x3d5);
  558.  
  559. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  560. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  561. boutb(3, 0x3b, 0x3d4, 0x3d5);
  562.  
  563. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  564. r63  = 0x00;
  565. boutb(1, 0x3f, 0x3d4, 0x3d5);
  566.  
  567. /*
  568.  *      Set Attribute Registers
  569.  */
  570.  
  571. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  572. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  573. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  574. r15  = 0x3f; r16  = 0x01; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  575. boutb(20, 0x00, 0x3c0, 0x3c1);
  576.  
  577. /*
  578.  *      Set GDC Registers
  579.  */
  580.  
  581. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  582. r5   = 0x00; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  583. r10  = 0x00;
  584. boutb(11, 0x00, 0x3ce, 0x3cf);
  585.  
  586. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  587. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  588. r13  = 0x00;
  589. boutb(1, 0x0d, 0x3ce, 0x3cf);
  590.  
  591. rmwb(0x3ce, 0x3cf, 0x0e, 0x20, 0x40);
  592. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  593. boutb(4, 0x10, 0x3ce, 0x3cf);
  594.  
  595. r21  = 0x00; r22  = 0x05;
  596. boutb(2, 0x15, 0x3ce, 0x3cf);
  597.  
  598. outw(0x23c0, 0x2000);
  599. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  600. outw(0x23c0, 0x0000);
  601. /*
  602.  *      Set Other Registers
  603.  */
  604.  
  605. outw(0x23c2, 0x0000);
  606. outw(0x23c0, 0x0001);
  607. outw(0x23c2, 0x0000);
  608. outw(0x23c2, 0x1000);
  609. outw(0x23c2, 0x2000);
  610. outw(0x23c2, 0x3000);
  611. outw(0x23c2, 0x410a);
  612. outw(0x23c2, 0x519e);
  613. outw(0x23c2, 0x6000);
  614. outw(0x23c2, 0x7000);
  615. outw(0x23c2, 0x8000);
  616. outw(0x23c2, 0x9000);
  617. outw(0x23c2, 0xa000);
  618. outw(0x23c2, 0xb000);
  619. outw(0x23c2, 0xc000);
  620. outw(0x23c2, 0xd000);
  621. outw(0x23c2, 0xe000);
  622. outw(0x23c0, 0x0102);
  623. outw(0x23c2, 0x1000);
  624. outw(0x23c2, 0x2000);
  625. outw(0x23c2, 0x3000);
  626. outw(0x23c2, 0x4000);
  627. outw(0x23c2, 0x5000);
  628. outw(0x23c2, 0x6000);
  629. outw(0x23c2, 0x7000);
  630. outw(0x23c2, 0x8000);
  631. outw(0x23c0, 0x0002);
  632. outw(0x23c2, 0x0000);
  633. outw(0x23c8, 0x0000);
  634. outw(0x23ca, 0x0000);
  635. outw(0x23cc, 0x0000);
  636. /*
  637.  *      Set Miscellaneous Output Register
  638.  */
  639.  
  640. outb(0x3c2, 0xe3);
  641.  
  642.  
  643. [comment]
  644.         Graphics Mode: 640 x 480 x 256 colors.
  645.  
  646. [ModeInfo]
  647.         ModeAttributes   = 0x18
  648.         BytesPerScanLine = 80
  649.         XResolution      = 640
  650.         YResolution      = 480
  651.         TextRows         = 30
  652.         BitsPerPixel     = 8
  653.         NumberOfPlanes   = 1
  654.         PageLength       = 307200
  655.         SaveSize         = 307200
  656.         TotalMemory      = 1048576
  657.         InterlaceMode    = 0
  658.         BufferAddress    = 0x0a0000
  659.  
  660. [TrapRegs]
  661.         0x3c2;
  662.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  663.         0x3c5;
  664.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  665.         0x3d5;
  666.         0x3c0, 0x00-0x13;
  667.         0x3c1;
  668.         0x3ce, 0x00-0x13, 0x15-0x16;
  669.         0x3cf;
  670.         0x23c0;
  671.         0x23c2;
  672.         0x23c8;
  673.         0x23ca;
  674.         0x23cc;
  675.         0x3b4;
  676.         0x3b5;
  677.  
  678. [SetMode]
  679.  
  680. /*
  681.  *      Set Miscellaneous Output Register
  682.  */
  683.  
  684. outb(0x3c2, 0xe3);
  685.  
  686.  
  687. /*
  688.  *      Set Sequencer Registers
  689.  */
  690.  
  691. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x0e;
  692. boutb(5, 0x00, 0x3c4, 0x3c5);
  693.  
  694. outw(0x3c4, 0x0300);
  695. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  696. boutb(3, 0x07, 0x3c4, 0x3c5);
  697.  
  698. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  699. boutb(3, 0x10, 0x3c4, 0x3c5);
  700.  
  701. r32  = 0x00;
  702. boutb(1, 0x20, 0x3c4, 0x3c5);
  703.  
  704. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  705. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  706. r39  = 0x00; r40  = 0x00;
  707. boutb(7, 0x22, 0x3c4, 0x3c5);
  708.  
  709. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  710. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  711. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  712. r51  = 0x00; r52  = 0x00;
  713. boutb(2, 0x33, 0x3c4, 0x3c5);
  714.  
  715. r54  = 0x00;
  716. boutb(1, 0x36, 0x3c4, 0x3c5);
  717.  
  718. /*
  719.  *      Set CRT Registers
  720.  */
  721.  
  722. outw(0x3d4, 0x0e11);
  723. r0   = 0x60; r1   = 0x4f; r2   = 0x50; r3   = 0x82; r4   = 0x55;
  724. r5   = 0x81; r6   = 0x14; r7   = 0x3e; r8   = 0x00; r9   = 0x40;
  725. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  726. r15  = 0x00; r16  = 0xea; r17  = 0x8b; r18  = 0xdf; r19  = 0x50;
  727. r20  = 0x40; r21  = 0xe7; r22  = 0x04; r23  = 0xe3; r24  = 0xff;
  728. boutb(25, 0x00, 0x3d4, 0x3d5);
  729.  
  730. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  731. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  732. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x20;
  733. boutb(4, 0x2c, 0x3d4, 0x3d5);
  734.  
  735. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  736. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  737. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  738. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  739. boutb(4, 0x36, 0x3d4, 0x3d5);
  740.  
  741. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  742. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  743. boutb(3, 0x3b, 0x3d4, 0x3d5);
  744.  
  745. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  746. r63  = 0x00;
  747. boutb(1, 0x3f, 0x3d4, 0x3d5);
  748.  
  749. /*
  750.  *      Set Attribute Registers
  751.  */
  752.  
  753. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  754. r5   = 0x05; r6   = 0x06; r7   = 0x07; r8   = 0x08; r9   = 0x09;
  755. r10  = 0x0a; r11  = 0x0b; r12  = 0x0c; r13  = 0x0d; r14  = 0x0e;
  756. r15  = 0x0f; r16  = 0x41; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  757. boutb(20, 0x00, 0x3c0, 0x3c1);
  758.  
  759. /*
  760.  *      Set GDC Registers
  761.  */
  762.  
  763. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  764. r5   = 0x40; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  765. r10  = 0x00;
  766. boutb(11, 0x00, 0x3ce, 0x3cf);
  767.  
  768. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  769. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  770. r13  = 0x00;
  771. boutb(1, 0x0d, 0x3ce, 0x3cf);
  772.  
  773. rmwb(0x3ce, 0x3cf, 0x0e, 0x20, 0x41);
  774. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  775. boutb(4, 0x10, 0x3ce, 0x3cf);
  776.  
  777. r21  = 0x40; r22  = 0x05;
  778. boutb(2, 0x15, 0x3ce, 0x3cf);
  779.  
  780. outw(0x23c0, 0x2000);
  781. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  782. outw(0x23c0, 0x0000);
  783. /*
  784.  *      Set Other Registers
  785.  */
  786.  
  787. outw(0x23c2, 0x0000);
  788. outw(0x23c0, 0x0001);
  789. outw(0x23c2, 0x0000);
  790. outw(0x23c2, 0x1000);
  791. outw(0x23c2, 0x2000);
  792. outw(0x23c2, 0x3000);
  793. outw(0x23c2, 0x410a);
  794. outw(0x23c2, 0x519e);
  795. outw(0x23c2, 0x6000);
  796. outw(0x23c2, 0x7000);
  797. outw(0x23c2, 0x8000);
  798. outw(0x23c2, 0x9000);
  799. outw(0x23c2, 0xa000);
  800. outw(0x23c2, 0xb000);
  801. outw(0x23c2, 0xc000);
  802. outw(0x23c2, 0xd000);
  803. outw(0x23c2, 0xe000);
  804. outw(0x23c0, 0x0102);
  805. outw(0x23c2, 0x1000);
  806. outw(0x23c2, 0x2000);
  807. outw(0x23c2, 0x3000);
  808. outw(0x23c2, 0x4000);
  809. outw(0x23c2, 0x5000);
  810. outw(0x23c2, 0x6000);
  811. outw(0x23c2, 0x7000);
  812. outw(0x23c2, 0x8000);
  813. outw(0x23c0, 0x0002);
  814. outw(0x23c2, 0x0000);
  815. outw(0x23c8, 0x0000);
  816. outw(0x23ca, 0x0000);
  817. outw(0x23cc, 0x0000);
  818. /*
  819.  *      Set Miscellaneous Output Register
  820.  */
  821.  
  822. outb(0x3c2, 0xe3);
  823.  
  824.  
  825. [comment]
  826.         Graphics Mode: 800 x 600 x 16 colors.
  827.  
  828. [ModeInfo]
  829.         ModeAttributes   = 0x18
  830.         BytesPerScanLine = 100
  831.         XResolution      = 800
  832.         YResolution      = 600
  833.         TextRows         = 37
  834.         BitsPerPixel     = 4
  835.         NumberOfPlanes   = 4
  836.         PageLength       = 60000
  837.         SaveSize         = 240000
  838.         TotalMemory      = 1048576
  839.         InterlaceMode    = 0
  840.         BufferAddress    = 0x0a0000
  841.  
  842. [TrapRegs]
  843.         0x3c2;
  844.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  845.         0x3c5;
  846.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  847.         0x3d5;
  848.         0x3c0, 0x00-0x13;
  849.         0x3c1;
  850.         0x3ce, 0x00-0x13, 0x15-0x16;
  851.         0x3cf;
  852.         0x23c0;
  853.         0x23c2;
  854.         0x23c8;
  855.         0x23ca;
  856.         0x23cc;
  857.         0x3b4;
  858.         0x3b5;
  859.  
  860. [SetMode]
  861.  
  862. /*
  863.  *      Set Miscellaneous Output Register
  864.  */
  865.  
  866. outb(0x3c2, 0xe3);
  867.  
  868.  
  869. /*
  870.  *      Set Sequencer Registers
  871.  */
  872.  
  873. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x06;
  874. boutb(5, 0x00, 0x3c4, 0x3c5);
  875.  
  876. outw(0x3c4, 0x0300);
  877. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  878. boutb(3, 0x07, 0x3c4, 0x3c5);
  879.  
  880. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  881. boutb(3, 0x10, 0x3c4, 0x3c5);
  882.  
  883. r32  = 0x00;
  884. boutb(1, 0x20, 0x3c4, 0x3c5);
  885.  
  886. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  887. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  888. r39  = 0x00; r40  = 0x00;
  889. boutb(7, 0x22, 0x3c4, 0x3c5);
  890.  
  891. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  892. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  893. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  894. r51  = 0x00; r52  = 0x00;
  895. boutb(2, 0x33, 0x3c4, 0x3c5);
  896.  
  897. r54  = 0x00;
  898. boutb(1, 0x36, 0x3c4, 0x3c5);
  899.  
  900. /*
  901.  *      Set CRT Registers
  902.  */
  903.  
  904. outw(0x3d4, 0x0e11);
  905. r0   = 0x7b; r1   = 0x63; r2   = 0x64; r3   = 0x9e; r4   = 0x69;
  906. r5   = 0x92; r6   = 0x6f; r7   = 0xf0; r8   = 0x00; r9   = 0x60;
  907. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  908. r15  = 0x00; r16  = 0x58; r17  = 0x8a; r18  = 0x57; r19  = 0x32;
  909. r20  = 0x00; r21  = 0x58; r22  = 0x6f; r23  = 0xe3; r24  = 0xff;
  910. boutb(25, 0x00, 0x3d4, 0x3d5);
  911.  
  912. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  913. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  914. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x00;
  915. boutb(4, 0x2c, 0x3d4, 0x3d5);
  916.  
  917. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  918. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  919. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  920. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  921. boutb(4, 0x36, 0x3d4, 0x3d5);
  922.  
  923. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  924. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  925. boutb(3, 0x3b, 0x3d4, 0x3d5);
  926.  
  927. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  928. r63  = 0x00;
  929. boutb(1, 0x3f, 0x3d4, 0x3d5);
  930.  
  931. /*
  932.  *      Set Attribute Registers
  933.  */
  934.  
  935. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  936. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  937. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  938. r15  = 0x3f; r16  = 0x01; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  939. boutb(20, 0x00, 0x3c0, 0x3c1);
  940.  
  941. /*
  942.  *      Set GDC Registers
  943.  */
  944.  
  945. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  946. r5   = 0x00; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  947. r10  = 0x00;
  948. boutb(11, 0x00, 0x3ce, 0x3cf);
  949.  
  950. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  951. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  952. r13  = 0x00;
  953. boutb(1, 0x0d, 0x3ce, 0x3cf);
  954.  
  955. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  956. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  957. boutb(4, 0x10, 0x3ce, 0x3cf);
  958.  
  959. r21  = 0x00; r22  = 0x05;
  960. boutb(2, 0x15, 0x3ce, 0x3cf);
  961.  
  962. outw(0x23c0, 0x2000);
  963. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  964. outw(0x23c0, 0x0000);
  965. /*
  966.  *      Set Other Registers
  967.  */
  968.  
  969. outw(0x23c2, 0x0000);
  970. outw(0x23c0, 0x0001);
  971. outw(0x23c2, 0x0000);
  972. outw(0x23c2, 0x1000);
  973. outw(0x23c2, 0x2000);
  974. outw(0x23c2, 0x3000);
  975. outw(0x23c2, 0x410a);
  976. outw(0x23c2, 0x519e);
  977. outw(0x23c2, 0x6000);
  978. outw(0x23c2, 0x7000);
  979. outw(0x23c2, 0x8000);
  980. outw(0x23c2, 0x9000);
  981. outw(0x23c2, 0xa000);
  982. outw(0x23c2, 0xb000);
  983. outw(0x23c2, 0xc000);
  984. outw(0x23c2, 0xd000);
  985. outw(0x23c2, 0xe000);
  986. outw(0x23c0, 0x0102);
  987. outw(0x23c2, 0x1000);
  988. outw(0x23c2, 0x2000);
  989. outw(0x23c2, 0x3000);
  990. outw(0x23c2, 0x4000);
  991. outw(0x23c2, 0x5000);
  992. outw(0x23c2, 0x6000);
  993. outw(0x23c2, 0x7000);
  994. outw(0x23c2, 0x8000);
  995. outw(0x23c0, 0x0002);
  996. outw(0x23c2, 0x0000);
  997. outw(0x23c8, 0x0000);
  998. outw(0x23ca, 0x0000);
  999. outw(0x23cc, 0x0000);
  1000. /*
  1001.  *      Set Miscellaneous Output Register
  1002.  */
  1003.  
  1004. outb(0x3c2, 0xef);
  1005.  
  1006.  
  1007. [comment]
  1008.         Graphics Mode: 800 x 600 x 256 colors.
  1009.  
  1010. [ModeInfo]
  1011.         ModeAttributes   = 0x18
  1012.         BytesPerScanLine = 100
  1013.         XResolution      = 800
  1014.         YResolution      = 600
  1015.         TextRows         = 37
  1016.         BitsPerPixel     = 8
  1017.         NumberOfPlanes   = 1
  1018.         PageLength       = 480000
  1019.         SaveSize         = 480000
  1020.         TotalMemory      = 1048576
  1021.         InterlaceMode    = 0
  1022.         BufferAddress    = 0x0a0000
  1023.  
  1024. [TrapRegs]
  1025.         0x3c2;
  1026.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1027.         0x3c5;
  1028.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  1029.         0x3d5;
  1030.         0x3c0, 0x00-0x13;
  1031.         0x3c1;
  1032.         0x3ce, 0x00-0x13, 0x15-0x16;
  1033.         0x3cf;
  1034.         0x23c0;
  1035.         0x23c2;
  1036.         0x23c8;
  1037.         0x23ca;
  1038.         0x23cc;
  1039.         0x3b4;
  1040.         0x3b5;
  1041.  
  1042. [SetMode]
  1043.  
  1044. /*
  1045.  *      Set Miscellaneous Output Register
  1046.  */
  1047.  
  1048. outb(0x3c2, 0xe3);
  1049.  
  1050.  
  1051. /*
  1052.  *      Set Sequencer Registers
  1053.  */
  1054.  
  1055. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x03; r4   = 0x0e;
  1056. boutb(5, 0x00, 0x3c4, 0x3c5);
  1057.  
  1058. outw(0x3c4, 0x0300);
  1059. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  1060. boutb(3, 0x07, 0x3c4, 0x3c5);
  1061.  
  1062. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  1063. boutb(3, 0x10, 0x3c4, 0x3c5);
  1064.  
  1065. r32  = 0x00;
  1066. boutb(1, 0x20, 0x3c4, 0x3c5);
  1067.  
  1068. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1069. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1070. r39  = 0x00; r40  = 0x00;
  1071. boutb(7, 0x22, 0x3c4, 0x3c5);
  1072.  
  1073. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1074. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  1075. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1076. r51  = 0x00; r52  = 0x00;
  1077. boutb(2, 0x33, 0x3c4, 0x3c5);
  1078.  
  1079. r54  = 0x00;
  1080. boutb(1, 0x36, 0x3c4, 0x3c5);
  1081.  
  1082. /*
  1083.  *      Set CRT Registers
  1084.  */
  1085.  
  1086. outw(0x3d4, 0x0e11);
  1087. r0   = 0x7b; r1   = 0x63; r2   = 0x64; r3   = 0x9e; r4   = 0x69;
  1088. r5   = 0x92; r6   = 0x6f; r7   = 0xf0; r8   = 0x00; r9   = 0x60;
  1089. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1090. r15  = 0x00; r16  = 0x58; r17  = 0x8a; r18  = 0x57; r19  = 0x64;
  1091. r20  = 0x40; r21  = 0x58; r22  = 0x6f; r23  = 0xe3; r24  = 0xff;
  1092. boutb(25, 0x00, 0x3d4, 0x3d5);
  1093.  
  1094. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1095. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1096. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x00;
  1097. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1098.  
  1099. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1100. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  1101. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  1102. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  1103. boutb(4, 0x36, 0x3d4, 0x3d5);
  1104.  
  1105. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1106. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  1107. boutb(3, 0x3b, 0x3d4, 0x3d5);
  1108.  
  1109. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  1110. r63  = 0x00;
  1111. boutb(1, 0x3f, 0x3d4, 0x3d5);
  1112.  
  1113. /*
  1114.  *      Set Attribute Registers
  1115.  */
  1116.  
  1117. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1118. r5   = 0x05; r6   = 0x06; r7   = 0x07; r8   = 0x08; r9   = 0x09;
  1119. r10  = 0x0a; r11  = 0x0b; r12  = 0x0c; r13  = 0x0d; r14  = 0x0e;
  1120. r15  = 0x0f; r16  = 0x41; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  1121. boutb(20, 0x00, 0x3c0, 0x3c1);
  1122.  
  1123. /*
  1124.  *      Set GDC Registers
  1125.  */
  1126.  
  1127. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1128. r5   = 0x40; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  1129. r10  = 0x00;
  1130. boutb(11, 0x00, 0x3ce, 0x3cf);
  1131.  
  1132. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  1133. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1134. r13  = 0x00;
  1135. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1136.  
  1137. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x01);
  1138. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  1139. boutb(4, 0x10, 0x3ce, 0x3cf);
  1140.  
  1141. r21  = 0x40; r22  = 0x05;
  1142. boutb(2, 0x15, 0x3ce, 0x3cf);
  1143.  
  1144. outw(0x23c0, 0x2000);
  1145. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1146. outw(0x23c0, 0x0000);
  1147. /*
  1148.  *      Set Other Registers
  1149.  */
  1150.  
  1151. outw(0x23c2, 0x0000);
  1152. outw(0x23c0, 0x0001);
  1153. outw(0x23c2, 0x0000);
  1154. outw(0x23c2, 0x1000);
  1155. outw(0x23c2, 0x2000);
  1156. outw(0x23c2, 0x3000);
  1157. outw(0x23c2, 0x410a);
  1158. outw(0x23c2, 0x519e);
  1159. outw(0x23c2, 0x6000);
  1160. outw(0x23c2, 0x7000);
  1161. outw(0x23c2, 0x8000);
  1162. outw(0x23c2, 0x9000);
  1163. outw(0x23c2, 0xa000);
  1164. outw(0x23c2, 0xb000);
  1165. outw(0x23c2, 0xc000);
  1166. outw(0x23c2, 0xd000);
  1167. outw(0x23c2, 0xe000);
  1168. outw(0x23c0, 0x0102);
  1169. outw(0x23c2, 0x1000);
  1170. outw(0x23c2, 0x2000);
  1171. outw(0x23c2, 0x3000);
  1172. outw(0x23c2, 0x4000);
  1173. outw(0x23c2, 0x5000);
  1174. outw(0x23c2, 0x6000);
  1175. outw(0x23c2, 0x7000);
  1176. outw(0x23c2, 0x8000);
  1177. outw(0x23c0, 0x0002);
  1178. outw(0x23c2, 0x0000);
  1179. outw(0x23c8, 0x0000);
  1180. outw(0x23ca, 0x0000);
  1181. outw(0x23cc, 0x0000);
  1182. /*
  1183.  *      Set Miscellaneous Output Register
  1184.  */
  1185.  
  1186. outb(0x3c2, 0xef);
  1187.  
  1188.  
  1189. [comment]
  1190.         Graphics Mode: 1024 x 768 x 16 colors.
  1191.  
  1192. [ModeInfo]
  1193.         ModeAttributes   = 0x18
  1194.         BytesPerScanLine = 128
  1195.         XResolution      = 1024
  1196.         YResolution      = 768
  1197.         TextRows         = 48
  1198.         BitsPerPixel     = 4
  1199.         NumberOfPlanes   = 4
  1200.         PageLength       = 98304
  1201.         SaveSize         = 393216
  1202.         TotalMemory      = 1048576
  1203.         InterlaceMode    = 0
  1204.         BufferAddress    = 0x0a0000
  1205.  
  1206. [TrapRegs]
  1207.         0x3c2;
  1208.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1209.         0x3c5;
  1210.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  1211.         0x3d5;
  1212.         0x3c0, 0x00-0x13;
  1213.         0x3c1;
  1214.         0x3ce, 0x00-0x13, 0x15-0x16;
  1215.         0x3cf;
  1216.         0x23c0;
  1217.         0x23c2;
  1218.         0x23c8;
  1219.         0x23ca;
  1220.         0x23cc;
  1221.         0x3b4;
  1222.         0x3b5;
  1223.  
  1224. [SetMode]
  1225.  
  1226. /*
  1227.  *      Set Miscellaneous Output Register
  1228.  */
  1229.  
  1230. outb(0x3c2, 0x23);
  1231.  
  1232.  
  1233. /*
  1234.  *      Set Sequencer Registers
  1235.  */
  1236.  
  1237. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x06;
  1238. boutb(5, 0x00, 0x3c4, 0x3c5);
  1239.  
  1240. outw(0x3c4, 0x0300);
  1241. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  1242. boutb(3, 0x07, 0x3c4, 0x3c5);
  1243.  
  1244. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  1245. boutb(3, 0x10, 0x3c4, 0x3c5);
  1246.  
  1247. r32  = 0x00;
  1248. boutb(1, 0x20, 0x3c4, 0x3c5);
  1249.  
  1250. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1251. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1252. r39  = 0x00; r40  = 0x00;
  1253. boutb(7, 0x22, 0x3c4, 0x3c5);
  1254.  
  1255. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1256. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1257. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1258. r51  = 0x00; r52  = 0x00;
  1259. boutb(2, 0x33, 0x3c4, 0x3c5);
  1260.  
  1261. r54  = 0x00;
  1262. boutb(1, 0x36, 0x3c4, 0x3c5);
  1263.  
  1264. /*
  1265.  *      Set CRT Registers
  1266.  */
  1267.  
  1268. outw(0x3d4, 0x0e11);
  1269. r0   = 0x99; r1   = 0x7f; r2   = 0x7f; r3   = 0x9c; r4   = 0x83;
  1270. r5   = 0x19; r6   = 0x97; r7   = 0x1f; r8   = 0x00; r9   = 0x40;
  1271. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1272. r15  = 0x00; r16  = 0x7f; r17  = 0x83; r18  = 0x7f; r19  = 0x40;
  1273. r20  = 0x00; r21  = 0x7f; r22  = 0x96; r23  = 0xe3; r24  = 0xff;
  1274. boutb(25, 0x00, 0x3d4, 0x3d5);
  1275.  
  1276. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1277. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1278. r44  = 0x34; r45  = 0x2a; r46  = 0x09; r47  = 0x00;
  1279. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1280.  
  1281. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1282. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  1283. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  1284. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  1285. boutb(4, 0x36, 0x3d4, 0x3d5);
  1286.  
  1287. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1288. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  1289. boutb(3, 0x3b, 0x3d4, 0x3d5);
  1290.  
  1291. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  1292. r63  = 0x00;
  1293. boutb(1, 0x3f, 0x3d4, 0x3d5);
  1294.  
  1295. /*
  1296.  *      Set Attribute Registers
  1297.  */
  1298.  
  1299. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1300. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  1301. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  1302. r15  = 0x3f; r16  = 0x01; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  1303. boutb(20, 0x00, 0x3c0, 0x3c1);
  1304.  
  1305. /*
  1306.  *      Set GDC Registers
  1307.  */
  1308.  
  1309. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1310. r5   = 0x00; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  1311. r10  = 0x00;
  1312. boutb(11, 0x00, 0x3ce, 0x3cf);
  1313.  
  1314. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  1315. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1316. r13  = 0x00;
  1317. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1318.  
  1319. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  1320. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  1321. boutb(4, 0x10, 0x3ce, 0x3cf);
  1322.  
  1323. r21  = 0x00; r22  = 0x05;
  1324. boutb(2, 0x15, 0x3ce, 0x3cf);
  1325.  
  1326. outw(0x23c0, 0x2000);
  1327. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1328. outw(0x23c0, 0x0000);
  1329. /*
  1330.  *      Set Other Registers
  1331.  */
  1332.  
  1333. outw(0x23c2, 0x0000);
  1334. outw(0x23c0, 0x0001);
  1335. outw(0x23c2, 0x0000);
  1336. outw(0x23c2, 0x1000);
  1337. outw(0x23c2, 0x2000);
  1338. outw(0x23c2, 0x3000);
  1339. outw(0x23c2, 0x410a);
  1340. outw(0x23c2, 0x519e);
  1341. outw(0x23c2, 0x6000);
  1342. outw(0x23c2, 0x7000);
  1343. outw(0x23c2, 0x8000);
  1344. outw(0x23c2, 0x9000);
  1345. outw(0x23c2, 0xa000);
  1346. outw(0x23c2, 0xb000);
  1347. outw(0x23c2, 0xc000);
  1348. outw(0x23c2, 0xd000);
  1349. outw(0x23c2, 0xe000);
  1350. outw(0x23c0, 0x0102);
  1351. outw(0x23c2, 0x1000);
  1352. outw(0x23c2, 0x2000);
  1353. outw(0x23c2, 0x3000);
  1354. outw(0x23c2, 0x4000);
  1355. outw(0x23c2, 0x5000);
  1356. outw(0x23c2, 0x6000);
  1357. outw(0x23c2, 0x7000);
  1358. outw(0x23c2, 0x8000);
  1359. outw(0x23c0, 0x0002);
  1360. outw(0x23c2, 0x0000);
  1361. outw(0x23c8, 0x0000);
  1362. outw(0x23ca, 0x0000);
  1363. outw(0x23cc, 0x0000);
  1364. /*
  1365.  *      Set Miscellaneous Output Register
  1366.  */
  1367.  
  1368. outb(0x3c2, 0x2f);
  1369.  
  1370.  
  1371. [comment]
  1372.         Graphics Mode: 1024 x 768 x 256 colors.
  1373.  
  1374. [ModeInfo]
  1375.         ModeAttributes   = 0x18
  1376.         BytesPerScanLine = 128
  1377.         XResolution      = 1024
  1378.         YResolution      = 768
  1379.         TextRows         = 48
  1380.         BitsPerPixel     = 8
  1381.         NumberOfPlanes   = 1
  1382.         PageLength       = 786432
  1383.         SaveSize         = 786432
  1384.         TotalMemory      = 1048576
  1385.         InterlaceMode    = 0
  1386.         BufferAddress    = 0x0a0000
  1387.  
  1388. [TrapRegs]
  1389.         0x3c2;
  1390.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1391.         0x3c5;
  1392.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  1393.         0x3d5;
  1394.         0x3c0, 0x00-0x13;
  1395.         0x3c1;
  1396.         0x3ce, 0x00-0x13, 0x15-0x16;
  1397.         0x3cf;
  1398.         0x23c0;
  1399.         0x23c2;
  1400.         0x23c8;
  1401.         0x23ca;
  1402.         0x23cc;
  1403.         0x3b4;
  1404.         0x3b5;
  1405.  
  1406. [SetMode]
  1407.  
  1408. /*
  1409.  *      Set Miscellaneous Output Register
  1410.  */
  1411.  
  1412. outb(0x3c2, 0x23);
  1413.  
  1414.  
  1415. /*
  1416.  *      Set Sequencer Registers
  1417.  */
  1418.  
  1419. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x03; r4   = 0x0e;
  1420. boutb(5, 0x00, 0x3c4, 0x3c5);
  1421.  
  1422. outw(0x3c4, 0x0300);
  1423. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  1424. boutb(3, 0x07, 0x3c4, 0x3c5);
  1425.  
  1426. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  1427. boutb(3, 0x10, 0x3c4, 0x3c5);
  1428.  
  1429. r32  = 0x00;
  1430. boutb(1, 0x20, 0x3c4, 0x3c5);
  1431.  
  1432. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1433. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1434. r39  = 0x00; r40  = 0x00;
  1435. boutb(7, 0x22, 0x3c4, 0x3c5);
  1436.  
  1437. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1438. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1439. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1440. r51  = 0x00; r52  = 0x00;
  1441. boutb(2, 0x33, 0x3c4, 0x3c5);
  1442.  
  1443. r54  = 0x00;
  1444. boutb(1, 0x36, 0x3c4, 0x3c5);
  1445.  
  1446. /*
  1447.  *      Set CRT Registers
  1448.  */
  1449.  
  1450. outw(0x3d4, 0x0e11);
  1451. r0   = 0x99; r1   = 0x7f; r2   = 0x80; r3   = 0x9c; r4   = 0x81;
  1452. r5   = 0x17; r6   = 0x97; r7   = 0x1f; r8   = 0x00; r9   = 0x40;
  1453. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1454. r15  = 0x00; r16  = 0x7f; r17  = 0x83; r18  = 0x7f; r19  = 0x80;
  1455. r20  = 0x40; r21  = 0x7f; r22  = 0x96; r23  = 0xe3; r24  = 0xff;
  1456. boutb(25, 0x00, 0x3d4, 0x3d5);
  1457.  
  1458. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1459. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1460. r44  = 0x34; r45  = 0x2a; r46  = 0x49; r47  = 0x00;
  1461. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1462.  
  1463. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1464. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  1465. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  1466. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  1467. boutb(4, 0x36, 0x3d4, 0x3d5);
  1468.  
  1469. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1470. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  1471. boutb(3, 0x3b, 0x3d4, 0x3d5);
  1472.  
  1473. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  1474. r63  = 0x00;
  1475. boutb(1, 0x3f, 0x3d4, 0x3d5);
  1476.  
  1477. /*
  1478.  *      Set Attribute Registers
  1479.  */
  1480.  
  1481. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1482. r5   = 0x05; r6   = 0x06; r7   = 0x07; r8   = 0x08; r9   = 0x09;
  1483. r10  = 0x0a; r11  = 0x0b; r12  = 0x0c; r13  = 0x0d; r14  = 0x0e;
  1484. r15  = 0x0f; r16  = 0x41; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  1485. boutb(20, 0x00, 0x3c0, 0x3c1);
  1486.  
  1487. /*
  1488.  *      Set GDC Registers
  1489.  */
  1490.  
  1491. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1492. r5   = 0x40; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  1493. r10  = 0x00;
  1494. boutb(11, 0x00, 0x3ce, 0x3cf);
  1495.  
  1496. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  1497. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1498. r13  = 0x00;
  1499. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1500.  
  1501. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x01);
  1502. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  1503. boutb(4, 0x10, 0x3ce, 0x3cf);
  1504.  
  1505. r21  = 0x40; r22  = 0x05;
  1506. boutb(2, 0x15, 0x3ce, 0x3cf);
  1507.  
  1508. outw(0x23c0, 0x2000);
  1509. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1510. outw(0x23c0, 0x0000);
  1511. /*
  1512.  *      Set Other Registers
  1513.  */
  1514.  
  1515. outw(0x23c2, 0x0000);
  1516. outw(0x23c0, 0x0001);
  1517. outw(0x23c2, 0x0000);
  1518. outw(0x23c2, 0x1000);
  1519. outw(0x23c2, 0x2000);
  1520. outw(0x23c2, 0x3000);
  1521. outw(0x23c2, 0x410a);
  1522. outw(0x23c2, 0x519e);
  1523. outw(0x23c2, 0x6000);
  1524. outw(0x23c2, 0x7000);
  1525. outw(0x23c2, 0x8000);
  1526. outw(0x23c2, 0x9000);
  1527. outw(0x23c2, 0xa000);
  1528. outw(0x23c2, 0xb000);
  1529. outw(0x23c2, 0xc000);
  1530. outw(0x23c2, 0xd000);
  1531. outw(0x23c2, 0xe000);
  1532. outw(0x23c0, 0x0102);
  1533. outw(0x23c2, 0x1000);
  1534. outw(0x23c2, 0x2000);
  1535. outw(0x23c2, 0x3000);
  1536. outw(0x23c2, 0x4000);
  1537. outw(0x23c2, 0x5000);
  1538. outw(0x23c2, 0x6000);
  1539. outw(0x23c2, 0x7000);
  1540. outw(0x23c2, 0x8000);
  1541. outw(0x23c0, 0x0002);
  1542. outw(0x23c2, 0x0000);
  1543. outw(0x23c8, 0x0000);
  1544. outw(0x23ca, 0x0000);
  1545. outw(0x23cc, 0x0000);
  1546. /*
  1547.  *      Set Miscellaneous Output Register
  1548.  */
  1549.  
  1550. outb(0x3c2, 0x2f);
  1551.  
  1552.  
  1553. [comment]
  1554.         Text Mode: 132 cols, 25 rows.
  1555.  
  1556. [ModeInfo]
  1557.         ModeAttributes   = 0x08
  1558.         BytesPerScanLine = 132
  1559.         XResolution      = 1188
  1560.         YResolution      = 400
  1561.         XCharSize        = 9
  1562.         YCharSize        = 16
  1563.         TextRows         = 25
  1564.         BitsPerPixel     = 4
  1565.         NumberOfPlanes   = 1
  1566.         PageLength       = 6600
  1567.         SaveSize         = 6600
  1568.         TotalMemory      = 1048576
  1569.         InterlaceMode    = 0
  1570.         BufferAddress    = 0x0b8000
  1571.  
  1572. [TrapRegs]
  1573.         0x3c2;
  1574.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1575.         0x3c5;
  1576.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  1577.         0x3d5;
  1578.         0x3c0, 0x00-0x13;
  1579.         0x3c1;
  1580.         0x3ce, 0x00-0x13, 0x15-0x16;
  1581.         0x3cf;
  1582.         0x23c0;
  1583.         0x23c2;
  1584.         0x23c8;
  1585.         0x23ca;
  1586.         0x23cc;
  1587.         0x3b4;
  1588.         0x3b5;
  1589.  
  1590. [SetMode]
  1591.  
  1592. /*
  1593.  *      Set Miscellaneous Output Register
  1594.  */
  1595.  
  1596. outb(0x3c2, 0x63);
  1597.  
  1598.  
  1599. /*
  1600.  *      Set Sequencer Registers
  1601.  */
  1602.  
  1603. r0   = 0x00; r1   = 0x00; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  1604. boutb(5, 0x00, 0x3c4, 0x3c5);
  1605.  
  1606. outw(0x3c4, 0x0300);
  1607. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  1608. boutb(3, 0x07, 0x3c4, 0x3c5);
  1609.  
  1610. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  1611. boutb(3, 0x10, 0x3c4, 0x3c5);
  1612.  
  1613. r32  = 0x00;
  1614. boutb(1, 0x20, 0x3c4, 0x3c5);
  1615.  
  1616. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1617. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1618. r39  = 0x00; r40  = 0x00;
  1619. boutb(7, 0x22, 0x3c4, 0x3c5);
  1620.  
  1621. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1622. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1623. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1624. r51  = 0x00; r52  = 0x00;
  1625. boutb(2, 0x33, 0x3c4, 0x3c5);
  1626.  
  1627. r54  = 0x00;
  1628. boutb(1, 0x36, 0x3c4, 0x3c5);
  1629.  
  1630. /*
  1631.  *      Set CRT Registers
  1632.  */
  1633.  
  1634. outw(0x3d4, 0x0e11);
  1635. r0   = 0x9c; r1   = 0x83; r2   = 0x84; r3   = 0x9f; r4   = 0x8a;
  1636. r5   = 0x1c; r6   = 0xbf; r7   = 0x1f; r8   = 0x00; r9   = 0x4f;
  1637. r10  = 0x0d; r11  = 0x0e; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1638. r15  = 0x00; r16  = 0x9c; r17  = 0x8e; r18  = 0x8f; r19  = 0x42;
  1639. r20  = 0x1f; r21  = 0x96; r22  = 0xb9; r23  = 0xa3; r24  = 0xff;
  1640. boutb(25, 0x00, 0x3d4, 0x3d5);
  1641.  
  1642. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1643. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1644. r44  = 0x00; r45  = 0x00; r46  = 0x04; r47  = 0x00;
  1645. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1646.  
  1647. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1648. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  1649. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  1650. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  1651. boutb(4, 0x36, 0x3d4, 0x3d5);
  1652.  
  1653. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1654. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  1655. boutb(3, 0x3b, 0x3d4, 0x3d5);
  1656.  
  1657. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  1658. r63  = 0x00;
  1659. boutb(1, 0x3f, 0x3d4, 0x3d5);
  1660.  
  1661. /*
  1662.  *      Set Attribute Registers
  1663.  */
  1664.  
  1665. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1666. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  1667. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  1668. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  1669. boutb(20, 0x00, 0x3c0, 0x3c1);
  1670.  
  1671. /*
  1672.  *      Set GDC Registers
  1673.  */
  1674.  
  1675. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1676. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  1677. r10  = 0x00;
  1678. boutb(11, 0x00, 0x3ce, 0x3cf);
  1679.  
  1680. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  1681. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1682. r13  = 0x00;
  1683. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1684.  
  1685. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  1686. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  1687. boutb(4, 0x10, 0x3ce, 0x3cf);
  1688.  
  1689. r21  = 0x10; r22  = 0x0e;
  1690. boutb(2, 0x15, 0x3ce, 0x3cf);
  1691.  
  1692. outw(0x23c0, 0x2000);
  1693. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1694. outw(0x23c0, 0x0000);
  1695. /*
  1696.  *      Set Other Registers
  1697.  */
  1698.  
  1699. outw(0x23c2, 0x0000);
  1700. outw(0x23c0, 0x0001);
  1701. outw(0x23c2, 0x0000);
  1702. outw(0x23c2, 0x1000);
  1703. outw(0x23c2, 0x2000);
  1704. outw(0x23c2, 0x3000);
  1705. outw(0x23c2, 0x410a);
  1706. outw(0x23c2, 0x519e);
  1707. outw(0x23c2, 0x6000);
  1708. outw(0x23c2, 0x7000);
  1709. outw(0x23c2, 0x8000);
  1710. outw(0x23c2, 0x9000);
  1711. outw(0x23c2, 0xa000);
  1712. outw(0x23c2, 0xb000);
  1713. outw(0x23c2, 0xc000);
  1714. outw(0x23c2, 0xd000);
  1715. outw(0x23c2, 0xe000);
  1716. outw(0x23c0, 0x0102);
  1717. outw(0x23c2, 0x1000);
  1718. outw(0x23c2, 0x2000);
  1719. outw(0x23c2, 0x3000);
  1720. outw(0x23c2, 0x4000);
  1721. outw(0x23c2, 0x5000);
  1722. outw(0x23c2, 0x6000);
  1723. outw(0x23c2, 0x7000);
  1724. outw(0x23c2, 0x8000);
  1725. outw(0x23c0, 0x0002);
  1726. outw(0x23c2, 0x0000);
  1727. outw(0x23c8, 0x0000);
  1728. outw(0x23ca, 0x0000);
  1729. outw(0x23cc, 0x0000);
  1730. /*
  1731.  *      Set Miscellaneous Output Register
  1732.  */
  1733.  
  1734. outb(0x3c2, 0x6f);
  1735.  
  1736.  
  1737. [comment]
  1738.         Text Mode: 132 cols, 44 rows.
  1739.  
  1740. [ModeInfo]
  1741.         ModeAttributes   = 0x08
  1742.         BytesPerScanLine = 132
  1743.         XResolution      = 1188
  1744.         YResolution      = 396
  1745.         XCharSize        = 9
  1746.         YCharSize        = 9
  1747.         TextRows         = 44
  1748.         BitsPerPixel     = 4
  1749.         NumberOfPlanes   = 1
  1750.         PageLength       = 11616
  1751.         SaveSize         = 11616
  1752.         TotalMemory      = 1048576
  1753.         InterlaceMode    = 0
  1754.         BufferAddress    = 0x0b8000
  1755.  
  1756. [TrapRegs]
  1757.         0x3c2;
  1758.         0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1759.         0x3c5;
  1760.         0x3d4, 0x00-0x18, 0x27-0x27, 0x29-0x2f, 0x31-0x3f;
  1761.         0x3d5;
  1762.         0x3c0, 0x00-0x13;
  1763.         0x3c1;
  1764.         0x3ce, 0x00-0x13, 0x15-0x16;
  1765.         0x3cf;
  1766.         0x23c0;
  1767.         0x23c2;
  1768.         0x23c8;
  1769.         0x23ca;
  1770.         0x23cc;
  1771.         0x3b4;
  1772.         0x3b5;
  1773.  
  1774. [SetMode]
  1775.  
  1776. /*
  1777.  *      Set Miscellaneous Output Register
  1778.  */
  1779.  
  1780. outb(0x3c2, 0x63);
  1781.  
  1782.  
  1783. /*
  1784.  *      Set Sequencer Registers
  1785.  */
  1786.  
  1787. r0   = 0x00; r1   = 0x00; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  1788. boutb(5, 0x00, 0x3c4, 0x3c5);
  1789.  
  1790. outw(0x3c4, 0x0300);
  1791. r7   = 0x09; r8   = 0x00; r9   = 0x00;
  1792. boutb(3, 0x07, 0x3c4, 0x3c5);
  1793.  
  1794. r16  = 0xc1; r17  = 0x65; r18  = 0x00;
  1795. boutb(3, 0x10, 0x3c4, 0x3c5);
  1796.  
  1797. r32  = 0x00;
  1798. boutb(1, 0x20, 0x3c4, 0x3c5);
  1799.  
  1800. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1801. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1802. r39  = 0x00; r40  = 0x00;
  1803. boutb(7, 0x22, 0x3c4, 0x3c5);
  1804.  
  1805. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1806. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1807. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1808. r51  = 0x00; r52  = 0x00;
  1809. boutb(2, 0x33, 0x3c4, 0x3c5);
  1810.  
  1811. r54  = 0x00;
  1812. boutb(1, 0x36, 0x3c4, 0x3c5);
  1813.  
  1814. /*
  1815.  *      Set CRT Registers
  1816.  */
  1817.  
  1818. outw(0x3d4, 0x0e11);
  1819. r0   = 0x9c; r1   = 0x83; r2   = 0x84; r3   = 0x9f; r4   = 0x8a;
  1820. r5   = 0x1c; r6   = 0xbf; r7   = 0x1f; r8   = 0x00; r9   = 0x48;
  1821. r10  = 0x07; r11  = 0x08; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1822. r15  = 0x00; r16  = 0x96; r17  = 0x88; r18  = 0x82; r19  = 0x42;
  1823. r20  = 0x1f; r21  = 0x89; r22  = 0xb9; r23  = 0xa3; r24  = 0xff;
  1824. boutb(25, 0x00, 0x3d4, 0x3d5);
  1825.  
  1826. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1827. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1828. r44  = 0x00; r45  = 0x00; r46  = 0x04; r47  = 0x00;
  1829. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1830.  
  1831. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1832. rmwb(0x3d4, 0x3d5, 0x32, 0x30, 0x44);
  1833. rmwb(0x3d4, 0x3d5, 0x33, 0x60, 0x01);
  1834. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00;
  1835. boutb(4, 0x36, 0x3d4, 0x3d5);
  1836.  
  1837. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1838. r59  = 0xef; r60  = 0x9a; r61  = 0x00;
  1839. boutb(3, 0x3b, 0x3d4, 0x3d5);
  1840.  
  1841. rmwb(0x3d4, 0x3d5, 0x3e, 0x27, 0x00);
  1842. r63  = 0x00;
  1843. boutb(1, 0x3f, 0x3d4, 0x3d5);
  1844.  
  1845. /*
  1846.  *      Set Attribute Registers
  1847.  */
  1848.  
  1849. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1850. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  1851. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  1852. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  1853. boutb(20, 0x00, 0x3c0, 0x3c1);
  1854.  
  1855. /*
  1856.  *      Set GDC Registers
  1857.  */
  1858.  
  1859. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1860. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  1861. r10  = 0x00;
  1862. boutb(11, 0x00, 0x3ce, 0x3cf);
  1863.  
  1864. rmwb(0x3ce, 0x3cf, 0x0b, 0x40, 0x85);
  1865. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1866. r13  = 0x00;
  1867. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1868.  
  1869. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  1870. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00;
  1871. boutb(4, 0x10, 0x3ce, 0x3cf);
  1872.  
  1873. r21  = 0x10; r22  = 0x0e;
  1874. boutb(2, 0x15, 0x3ce, 0x3cf);
  1875.  
  1876. outw(0x23c0, 0x2000);
  1877. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1878. outw(0x23c0, 0x0000);
  1879. /*
  1880.  *      Set Other Registers
  1881.  */
  1882.  
  1883. outw(0x23c2, 0x0000);
  1884. outw(0x23c0, 0x0001);
  1885. outw(0x23c2, 0x0000);
  1886. outw(0x23c2, 0x1000);
  1887. outw(0x23c2, 0x2000);
  1888. outw(0x23c2, 0x3000);
  1889. outw(0x23c2, 0x410a);
  1890. outw(0x23c2, 0x519e);
  1891. outw(0x23c2, 0x6000);
  1892. outw(0x23c2, 0x7000);
  1893. outw(0x23c2, 0x8000);
  1894. outw(0x23c2, 0x9000);
  1895. outw(0x23c2, 0xa000);
  1896. outw(0x23c2, 0xb000);
  1897. outw(0x23c2, 0xc000);
  1898. outw(0x23c2, 0xd000);
  1899. outw(0x23c2, 0xe000);
  1900. outw(0x23c0, 0x0102);
  1901. outw(0x23c2, 0x1000);
  1902. outw(0x23c2, 0x2000);
  1903. outw(0x23c2, 0x3000);
  1904. outw(0x23c2, 0x4000);
  1905. outw(0x23c2, 0x5000);
  1906. outw(0x23c2, 0x6000);
  1907. outw(0x23c2, 0x7000);
  1908. outw(0x23c2, 0x8000);
  1909. outw(0x23c0, 0x0002);
  1910. outw(0x23c2, 0x0000);
  1911. outw(0x23c8, 0x0000);
  1912. outw(0x23ca, 0x0000);
  1913. outw(0x23cc, 0x0000);
  1914. /*
  1915.  *      Set Miscellaneous Output Register
  1916.  */
  1917.  
  1918. outb(0x3c2, 0x6f);
  1919.  
  1920.  
  1921.